package com.heima.common.minio;

import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ObjectUtils;

/*
封装MinIO为Starter：
    【1】导入依赖
    【2】创建配置类，定义minio客户端bean
    【3】封装操作类
        I：定义操作接口，定义 文件上传/下载/删除 抽象方法
        II:定义是实现，实现抽象方法
        III:测试操作类
 */
//客户端配置类
@Data
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinIOConfiguration {
    /**
     *   #服务地址
     *   #服务账密
     *   #桶
     *   #文件上传的真实路径
     */
    private String accessKey;
    private String secretKey;
    private String bucket;
    private String endpoint;
    private String readPath;

    //定义客户端
    @Bean
    public MinioClient minioClient(){
        //创建MinIO客户端
        MinioClient client = MinioClient.builder()
                //指定accesskey和秘钥
                .credentials(accessKey,secretKey)
                //指定服务地址
                .endpoint(ObjectUtils.isEmpty(endpoint)? "http://localhost:9000":endpoint)
                //构建客户端对象
                .build();
        return client;
    }
}
